<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit d'édition
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 4 || $GLOBALS['USER']['admin'])){

		// l'identifiant de la donnée à supprimer est indiqué par un entier
		if(isset($_GET['id']) && numericInt($_GET['id'])){
		
			$nb_sousEspeces = valueExists((int)$_GET['id'], "CODESOUSESPECE", "sous_espece", $connexion);
			
			if($nb_sousEspeces == 1){ // la sous-espèce à éditer existe et son identifiant est unique
	
?>
<?php
//------------------------------------------------------------ Valeur des champs avant saisie

	// récupération des informations de la sous-espèce
	$query_recuperation_sousespece = "SELECT e.NOMSOUSESPECE, e.CODEAUTEUR, a.CODECLASSIFICATION, a.CODEESPECE ";
	$query_recuperation_sousespece .= "FROM sous_espece e ";
	$query_recuperation_sousespece .= "LEFT JOIN a_pour_espece a ON a.CODESOUSESPECE = e.CODESOUSESPECE ";
	$query_recuperation_sousespece .= "WHERE e.CODESOUSESPECE = ".$_GET['id']." ";
	
	$result_recuperation_sousespece = mysql_query($query_recuperation_sousespece, $connexion) or logError("RECUPERATION SOUS ESPECE-".$query_recuperation_sousespece."-".mysql_error());
	
	while($tab_recuperation_sousespece = mysql_fetch_row($result_recuperation_sousespece)){

		$dv_nom = $tab_recuperation_sousespece[0]; // valeur du champ nom (edt_nom)
		$dv_auteur = $tab_recuperation_sousespece[1]; // valeur du champ auteur (edt_auteur)
		$dv_espece[] = $tab_recuperation_sousespece[3]; // valeur du champ de la ligne, espèce (edt_espèce[])
		$dv_classification[] = $tab_recuperation_sousespece[2]; // valeur du champ de la  ligne, classification (edt_classification[])

	}
	
	mysql_free_result($result_recuperation_sousespece);
	
	// valeurs possibles du champ edt_auteur
	$query_recuperation_auteurs = "SELECT CODEAUTEUR AS id, ABREVIATIONAUTEUR AS abreviation FROM auteur ORDER BY abreviation";
	
	$result_recuperation_auteurs =  mysql_query($query_recuperation_auteurs, $connexion) or logError("RECUPERATION AUTEURS-".$query_recuperation_auteurs."-".mysql_error());

	$selectAuteurs = array(); // on créé un tableau qui contient la liste des auteurs ainsi que les informations de chacun
	$nb_auteurs = 0;
	while($tab_recuperation_auteurs = mysql_fetch_assoc($result_recuperation_auteurs)){
		$selectAuteurs[$nb_auteurs] = $tab_recuperation_auteurs;
		$nb_auteurs++;
	}
	
	mysql_free_result($result_recuperation_auteurs);
	
	// valeurs possibles du champ edt_classification
	$query_recuperation_classifications = "SELECT CODECLASSIFICATION AS id, NOMCLASSIFICATION AS nom FROM classification ORDER BY nom";
	
	$result_recuperation_classifications =  mysql_query($query_recuperation_classifications, $connexion) or logError("RECUPERATION CLASSIFICATIONS-".$query_recuperation_classifications."-".mysql_error());

	$selectClassifications = array(); // on créé un tableau qui contient la liste des classifications ainsi que les informations de chacune
	$nb_classifications = 0;
	while($tab_recuperation_classifications = mysql_fetch_assoc($result_recuperation_classifications)){
		$selectClassifications[$nb_classifications] = $tab_recuperation_classifications;
		$nb_classifications++;
	}
	
	mysql_free_result($result_recuperation_classifications);
	
	// valeurs possibles du champ edt_espece
	$query_recuperation_especes = "SELECT CODEESPECE AS id, NOMESPECE AS nom FROM espece ORDER BY nom";
	
	$result_recuperation_especes =  mysql_query($query_recuperation_especes, $connexion) or logError("RECUPERATION ESPECES-".$query_recuperation_especes."-".mysql_error());

	$selectEspeces = array(); // on créé un tableau qui contient la liste des espèces ainsi que les informations de chacune
	$nb_especes = 0;
	while($tab_recuperation_especes = mysql_fetch_assoc($result_recuperation_especes)){
		$selectEspeces[$nb_especes] = $tab_recuperation_especes;
		$nb_especes++;
	}
	
	mysql_free_result($result_recuperation_especes);
	
?>
<?php
//------------------------------------------------------------ Traitements si le formulaire a été envoyé

/********************************* Règles :

	- le nom de la sous-espèce ne peut pas être vide
	- le nom de la sous-espèce ne doit pas être déjà enregistré dans la BDD
	- l'auteur doit exister dans la BDD
	- Liens avec les espèces :
		- Chaque classification doit être différente
		- La classification doit exister dans la BDD
		- L'espèce doit exister dans la BDD

*****************************************/

	$statut = array(); // indique le statut du traitement du formulaire (echec ou succes) - tableau contenant les messages à afficher
	$erreur = false; // indique si une erreur a été rencontrée lors du traitement

	trimTabByKey($_POST, "edt_"); // appel à la fonction trimTabByKey() définie dans fonctions.php
	
	//---------------------------------- Contrôle des données ----------------------------------
	
	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
	
		// Contrôle des données du nom du sous-espèce
		if(isset($_POST['edt_nom']) && is_string($_POST['edt_nom'])){
			if(emptyString($_POST['edt_nom'])){
				$statut[] = "Le nom de la sous-espèce ne peut être effacé";
				$erreur = true;
			}else{
				$dv_nom = $_POST['edt_nom'];
			}
		}else{
			$statut[] = "Aucun nom de la sous-espèce indiqué";
			$erreur = true;
		}
		
		// Contrôle des données de l'auteur ayant découvert le sous-espèce
		if(isset($_POST['edt_auteur']) && is_string($_POST['edt_auteur'])){
			if(!numericInt($_POST['edt_auteur'])){
				$statut[] = "Format de l'auteur de la sous-espèce incorrect";
				$erreur = true;
			}else{
				if(valueExists((int)$_POST['edt_auteur'], "CODEAUTEUR", "auteur", $connexion) == 1){
					$dv_auteur = $_POST['edt_auteur'];
				}else{
					$statut[] = "L'auteur indiqué n'existe pas";
					$erreur = true;
				}
			}
		}else{
			$statut[] = "Aucun auteur de la sous-espèce indiqué";
			$erreur = true;
		}
		
		// Contrôle des données des liens avec les espèces
		if(isset($_POST['edt_nbLiens']) && is_string($_POST['edt_nbLiens']) && isset($_POST['edt_espece']) && is_array($_POST['edt_espece']) && isset($_POST['edt_classification']) && is_array($_POST['edt_classification'])){
			$nbEspeces = count($_POST['edt_espece']);
			$nbClassifications = count($_POST['edt_classification']);
			if(numericInt($_POST['edt_nbLiens']) && $_POST['edt_nbLiens'] == $nbEspeces && $_POST['edt_nbLiens'] == $nbClassifications){
				if($_POST['edt_nbLiens'] >= 1){
					if(uniqueValues($_POST['edt_classification'])){
						$new_dv_espece = array();
						$new_dv_classification = array();
						$errEsp = false;
						for($i=0; $i<$_POST['edt_nbLiens']; $i++){
							if(!numericInt($_POST['edt_espece'][$i])){
								$statut[] = "Format de l'espèce (ligne ".($i+1).") incorrect";
								$erreur = true;
								$errEsp = true;
							}else{
								if(valueExists((int)$_POST['edt_espece'][$i], "CODEESPECE", "espece", $connexion) == 1){
									$new_dv_espece[$i] = $_POST['edt_espece'][$i];
								}else{
									$statut[] = "Une des espèces n'existe pas";
									$erreur = true;
									$errEsp = true;
								}
							}
							if(!numericInt($_POST['edt_classification'][$i])){
								$statut[] = "Format de la classification (ligne ".($i+1).") incorrect";
								$erreur = true;
								$errEsp = true;
							}else{
								if(valueExists((int)$_POST['edt_classification'][$i], "CODECLASSIFICATION", "classification", $connexion) == 1){
									$new_dv_classification[$i] = $_POST['edt_classification'][$i];
								}else{
									$statut[] = "Une des classifications n'existe pas";
									$erreur = true;
									$errEsp = true;
								}
							}
						}
						if(!$errEsp){
							$dv_espece = $new_dv_espece;
							$dv_classification = $new_dv_classification;
						}
					}else{
						$statut[] = "Une classification est indiquée plusieurs fois";
						$erreur = true;
					}
				}else{
					$statut[] = "Au moins un lien avec une espèce doit être indiqué";
					$erreur = true;
				}
			}else{
				$statut[] = "Liens avec les espèces mal indiqués";
				$erreur = true;
			}
		}else{
			$statut[] = "Aucun lien avec les espèces indiqué";
			$erreur = true;
		}
		
		//---------------------------------- Modification de la sous-espèce ----------------------------------
	
		if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
		
			// Modification des informations dans la table SOUS_ESPECE
			$query_modification_sousespece = "UPDATE sous_espece ";
			$query_modification_sousespece .= "SET NOMSOUSESPECE = ".mysqlString($_POST['edt_nom']).", CODEAUTEUR = ".$_POST['edt_auteur']." ";
			$query_modification_sousespece .= "WHERE CODESOUSESPECE = ".$_GET['id']." ";
			
			$result_modification_sousespece = mysql_query($query_modification_sousespece, $connexion) or logError("MODIFICATION SOUS ESPECE-".$query_modification_sousespece."-".mysql_error());
		
			if($result_modification_sousespece === false){
				$statut[] = "Erreur critique lors de la modification de la sous-espèce";
				$erreur = true;
			}
			
			if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
			
				// Suppression des anciens liens avec les espèces
				$query_suppression_lien_sousespece_espece = "DELETE FROM a_pour_espece WHERE CODESOUSESPECE = ".$_GET['id']." ";
				
				$result_suppression_lien_sousespece_espece = mysql_query($query_suppression_lien_sousespece_espece, $connexion) or logError("SUPPRESSION LIENS SOUS ESPECE / ESPECE-".$query_suppression_lien_sousespece_espece."-".mysql_error());
			
				if($result_suppression_lien_sousespece_espece === true){
			
					// Ajout des informations dans les tables A_POUR_ESPECE
					for($i=0; $i<$_POST['edt_nbLiens']; $i++){
					
						$query_ajout_lien_sousespece_espece = "INSERT INTO a_pour_espece(CODEESPECE, CODESOUSESPECE, CODECLASSIFICATION) ";
						$query_ajout_lien_sousespece_espece .= "VALUES(".$_POST['edt_espece'][$i].", ".$_GET['id'].", ".$_POST['edt_classification'][$i].") ";
						
						$result_ajout_lien_sousespece_espece = mysql_query($query_ajout_lien_sousespece_espece, $connexion) or logError("CREATION LIEN SOUS ESPECE / ESPECE-".$query_ajout_lien_sousespece_espece."-".mysql_error());
					
						if($result_ajout_lien_sousespece_espece === false){
							$statut[] = "Erreur critique à la modification du lien ".($i+1)." sous-espèce/espèce";
							$erreur = true;
						}
					
					}
					
				}else{
					$statut[] = "Erreur critique à la modification des liens sous-espèce/espèce";
					$erreur = true;
				}
				
			}
			
			if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
				$statut[] = "Les informations de la sous-espèce ont été modifiés";
				logAction("SOUS ESPECE (id: ".$_GET['id'].") MODIFIEE par ".capitalise($GLOBALS['USER']['prenom'])." ".mb_strtoupper($GLOBALS['USER']['nom'])." (".$GLOBALS['USER']['login'].")");
			}
		
		}
		
	}
?>
<?php
//------------------------------------------------------------ Affichage du statut si le formulaire a été envoyé

	if(isset($_POST['form_sent'])){ // si le formulaire est envoyé
		
		if($erreur){
			afficherStatut($statut, 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}else{
			afficherStatut($statut, 1); // appel à la fonction afficherStatut() définie dans fonctions.php
		}
	
	}

?>
<?php
	boutonRetour("index.php?p=gestion/sousespece_gere"); // // appel à la fonction boutonRetour() définie dans fonctions.php
?>
<form method="post" action="index.php?p=gestion/sousespece_edite&amp;id=<?php echo $_GET['id']; ?>">
	<table class="formulaire" style="margin-left: auto; margin-right: auto;">
		<tr>
			<th class="titre" colspan="2">Modification des informations d'une sous-espèce</th>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">informations principales</th>
		</tr>
		<tr>
			<td style="width: 120px" class="etiquette">Nom * :</td>
			<td style="width: 525px" class="champ"><input type="text" name="edt_nom" size="25" value="<?php echo htmlentities($dv_nom, ENT_COMPAT, "UTF-8"); ?>" /></td>
		</tr>
		<tr>
			<td class="etiquette">Auteur/Groupe * :</td>
			<td class="champ">
				<select id="edt_auteur" name="edt_auteur" style="width: 200px;">
               <option>
					<?php
						if($nb_auteurs > 0){
							foreach($selectAuteurs as $auteur){
								if($auteur['id'] == $dv_auteur){
									echo "<option value=\"".$auteur['id']."\" selected=\"selected\">".htmlentities($auteur['abreviation'], ENT_NOQUOTES, "UTF-8")."</option>";
								}else{
									echo "<option value=\"".$auteur['id']."\">".htmlentities($auteur['abreviation'], ENT_NOQUOTES, "UTF-8")."</option>";
								}
							}
							unset($auteur);
						}else{
							echo "<option disabled=\"disabled\">Aucun auteur enregistré</option>";
						}
					?>
				</select>
				<input type="text" class="recherche" id="srch_auteur" value="recherche..." size="10" onfocus="clearField('srch_auteur', 'recherche...');" onblur="resetField('srch_auteur', 'recherche...');" onkeyup="trierSelect('edt_auteur', 'srch_auteur');" /><br />
				<input type="button" value="Ajouter un auteur/groupe" onclick="popup('popup.php?p=gestion/auteur_ajoute_popup&amp;maj=edt_auteur&amp;sel=1', 500, 420);" />
			</td>
		</tr>
		<tr>
			<th class="sous_titre" colspan="2">liens avec les espèces</th>
		</tr>
		<tr>
			<td class="etiquette">Espèce(s) * :</td>
			<td class="champ">
				<div class="cadre-entete">Ajouter une ligne : <img class="boutonASLigne" src="images/plus.png" alt="+" title="Ajouter une ligne" onclick="ajouterLigne(1, 'esp', 1);" /></div>
				<div class="cadre-contenu" id="lstLg_esp">
					<?php
						$nbLignes = count($dv_espece);
						$i=0;
						foreach($dv_espece as $id => $value){
					?>
							<div id="lg_esp_<?php echo $i+1; ?>" style="margin: 2px 0;">
								<label>Est sous-espèce de</label>
								<select name="edt_espece[]">
									<?php
										if($nb_especes > 0){
											foreach($selectEspeces as $espece){
												if($espece['id'] == $dv_espece[$id]){
													echo "<option value=\"".$espece['id']."\" selected=\"selected\">".htmlentities(capitalise($espece['nom']), ENT_NOQUOTES, "UTF-8")."</option>";
												}else{
													echo "<option value=\"".$espece['id']."\">".htmlentities(capitalise($espece['nom']), ENT_NOQUOTES, "UTF-8")."</option>";
												}
											}
											unset($espece);
										}else{
											echo "<option disabled=\"disabled\">Aucune espèce</option>";
										}
									?>
								</select>
								, <label>d'après</label>
								<select name="edt_classification[]">
									<?php
										if($nb_classifications > 0){
											foreach($selectClassifications as $classification){
												if($classification['id'] == $dv_classification[$id]){
													echo "<option value=\"".$classification['id']."\" selected=\"selected\">".htmlentities(truncate($classification['nom'], 20), ENT_NOQUOTES, "UTF-8")."</option>";
												}else{
													echo "<option value=\"".$classification['id']."\">".htmlentities(truncate($classification['nom'], 20), ENT_NOQUOTES, "UTF-8")."</option>";
												}
											}
											unset($classification);
										}else{
											echo "<option disabled=\"disabled\">Aucune classification</option>";
										}
									?>
								</select>
								<img id="btnLg_esp_<?php echo $i+1; ?>" class="boutonASLigne" src="images/moins.png" alt="-" title="Supprimer cette ligne" onclick="supprimerLigne(<?php echo $i+1; ?>, 'esp', 1);" />
							</div>
					<?php
							$i++;					
						}
						unset($id);
						unset($value);
					?>
				</div>
				<input type="hidden" id="nbLg_esp" name="edt_nbLiens" value="<?php echo $nbLignes; ?>" />
			</td>
		</tr>
		<tr>
			<td class="envoi" colspan="2"><input type="submit" value="Modifier" /><input type="hidden" name="form_sent" value="1" /></td>
		</tr>
		<tr>
			<td class="legende" colspan="2">* = champs obligatoires</td>
		</tr>
	</table>
</form>
<div class="information">
	<div class="titre">Informations</div>
	<h4>Auteur / Groupe d'auteurs :</h4>
	<p>Indique l'auteur ayant mis en évidence la sous-espèce. Si plusieurs auteurs ont découvert la sous-espèce ensemble, indiquez-les en un seul champ (plus d'informations en ajoutant les auteurs).</p>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page

			}else{
				afficherStatut("La sous-espèce à éditer n'existe pas", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
			}

		}else{
			afficherStatut("La sous-espèce à éditer n'est pas ou mal indiquée", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>